package com.halden.mycache.support.listener;

import lombok.Data;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Author: halden
 * @Data:2023/2/11 16:45
 * @Description:
 */
@Data
public class SlowLogContext {
    /**
     * 入参
     * @since 0.0.4
     */
    private Object[] params;

    /**
     * 方法
     * @since 0.0.4
     */
    private Method method;

    /**
     * 方法开始执行时间
     */
    private long start;

    /**
     * 方法结束执行时间
     */
    private long end;

    /**
     * 设置params
     * @param params
     * @return
     * @since 0.0.4
     */
    public SlowLogContext params(Object[] params){
        this.params = params;
        return this;
    }

    /**
     * 获取params
     * @return
     * @since 0.0.4
     */
    public Object[] params(){
        return this.params;
    }

    /**
     * 设置Method
     * @param method
     * @return
     * @since 0.0.4
     */
    public SlowLogContext method(Method method){
        this.method = method;
        return this;
    }

    /**
     * 获取method的名字
     * @return
     * @since 0.0.4
     */
    public String methodName(){
        return this.method.getName();
    }

    /**
     * 设置方法开始时间
     * @param start
     * @since 0.0.4
     */
    public void setStart(Date start){
        this.start = start.getTime();
    }

    /**
     * 设置方法结束时间
     * @param end
     * @since 0.0.4
     */
    public void setEnd(Date end){
        this.end = end.getTime();
    }

    /**
     * 获取方法运行时间
     * @return
     * @since 0.0.4
     */
    public long costTimeMills() {
        return this.end - this.start;
    }
}
